import axios from "axios";
//引入router对象
import router from "../router";
//引入element-ui对象
import ElementUI from "element-ui";
// 定义跨域代理
// 设置axios的默认基础URL如果是开发模式，则采用/api,如果不为开发模式则http://www.chst.vip
axios.defaults.baseURL =
  process.env.NODE_ENV === "development" ? "/api" : "http://www.chst.vip";

axios.defaults.withCredentials = true; //允许请求携带认证

//设置请求拦截器
axios.interceptors.request.use(config => {
  //config是每个请求对象
  //登录和注册是不要token的,一次判断是否为登录,如果是登陆就放行
  if (config.url == "/users/login") {
    return config;
  } else {
    //从localStorage中取出本地token
    let token = localStorage.getItem("bms-token");
    // config.url="/users/login?name=zzx"
    //给请求头添加token证书
    config.headers["authorization"] = token;
    return config;
  }
  // console.log(config);
});

//响应拦截
axios.interceptors.response.use(config => {
  // console.log(config);
  let { data } = config;
  //该后台管理系统的后台api中1004代表token失效,10022表示seeion登录失效,提示错误转跳到登录页
  if (data.code == "1004" || data.code == "10022") {
    //提示登录失效
    // alert("登录失效")
    //美化提示
    // console.log(ElementUI);
    ElementUI.Message.error("登录信息失效,请重新登陆");
    // console.log(router);
    //清理token,防止死循环
    localStorage.removeItem("bms-token");
    //刷新页面
    location.reload();
    //返回login页面
    router.push("/login");
  }
  return config;
});

//设置响应最长时间
axios.create({
  timeout: 4000
});

//终端请求设置
export let CancelToken = axios.CancelToken;



export default axios;
